#ifndef LED_PWM_H
#define LED_PWM_H

#include "driver/gpio.h"
#include "driver/ledc.h"
#include "esp_err.h"

/**
 * @brief 初始化LED PWM控制
 * 
 * @param gpio_num GPIO引脚号
 * @param channel LEDC通道号
 * @return esp_err_t 错误码，ESP_OK表示成功
 */
esp_err_t led_pwm_init(gpio_num_t gpio_num, ledc_channel_t channel);

/**
 * @brief 打开LED
 * 
 * @return esp_err_t 错误码，ESP_OK表示成功
 */
esp_err_t led_pwm_on(void);

/**
 * @brief 关闭LED
 * 
 * @return esp_err_t 错误码，ESP_OK表示成功
 */
esp_err_t led_pwm_off(void);

/**
 * @brief 启动LED呼吸灯效果
 * 
 * @param period_ms 呼吸周期（毫秒）
 * @return esp_err_t 错误码，ESP_OK表示成功
 */
esp_err_t led_pwm_start_breathing(uint32_t period_ms);

/**
 * @brief 启动LED快闪效果
 * 
 * @param interval_ms 闪烁间隔（毫秒）
 * @return esp_err_t 错误码，ESP_OK表示成功
 */
esp_err_t led_pwm_start_fast_flash(uint32_t interval_ms);

/**
 * @brief 启动LED慢亮效果
 * 
 * @param rise_time_ms 上升时间（毫秒）
 * @return esp_err_t 错误码，ESP_OK表示成功
 */
esp_err_t led_pwm_start_slow_rise(uint32_t rise_time_ms);

/**
 * @brief 停止所有LED效果，恢复到静态控制
 * 
 * @return esp_err_t 错误码，ESP_OK表示成功
 */
esp_err_t led_pwm_stop_effects(void);

/**
 * @brief 设置LED亮度
 * 
 * @param brightness 亮度值 (0-100)
 * @return esp_err_t 错误码，ESP_OK表示成功
 */
esp_err_t led_pwm_set_brightness(uint8_t brightness);

/**
 * @brief 反初始化LED PWM控制
 * 
 * @return esp_err_t 错误码，ESP_OK表示成功
 */
esp_err_t led_pwm_deinit(void);

#endif // LED_PWM_H
    